This invention relates to a method and apparatus for handling interrupts in a multiprocessor computing system, especially for a dual processor system. In particular, a control is provided so that a CPU can determine which input/output (I/O) channel has the highest priority interrupt pending for that particular processing unit.
In a multiprocessor computing system, it is desirable to have a plurality of I/O channels operating asyncronously. It is further desirable to allow any of the processing units to communicate with any of the I/O channels. The processors may then perform coequally rather than in a master-slave arrangement. Interrupts are used by the I/O channels to indicate to the processing unit that an I/O operation has been completed. Interrupts are also used for other conventional purposes such as to indicate a power failure. Interrupts are sporadically being caused in the I/O channels. The processing units handle the interrupts when they have time. A processing unit must first find out where the highest priority interrupt is pending. Hence, the processing unit polls the I/O channels to find out where the highest priority interrupt is pending. While the processing unit polls to determine where the highest priority interrupt is located, more interrupts are being issued. It is necessary for a system to deal with this problem which is further accentuated in an asynchronous system. Additionally, the longer it takes for the I/O channels to determine among themselves which has the highest priority interrupt, the more interrupts which will be produced in the interim and the slower the system will be in handling interrupts.
It is an object of the present invention to provide each I/O channel with instantaneous knowledge as to whether it holds the highest priority interrupt for a particular processing unit. It is a further object of the present invention to provide a system in which the I/O channels are flexibly reassignable to a different processing unit. It is a still further object of the present invention to provide synchronization when a processing unit polls the I/O channels to locate the highest priority pending interrupt so that there is one instant in time which is a reference for the entire system at which the priority status of interrupts is determined.